package cn.tannn.tcache.command.list;

import cn.tannn.tcache.core.Command;
import cn.tannn.tcache.core.Reply;
import cn.tannn.tcache.core.Tcache;

/**
 * list 尾部弹出
 * <P> 移除列表的最后一个元素，返回值为移除的元素
 * <p> rpop k1 [count:可选弹出几个元素]
 *
 * @author <a href="https://t.tannn.cn/">tan</a>
 * @date 2024/6/20 上午10:01
 */
public class RpopCommand implements Command {
    @Override
    public String name() {
        return "RPOP";
    }

    @Override
    public Reply<?> exec(Tcache cache, String[] args) {
        String key = getKey(args);
        int count = 1;
        if (args.length > 6) {
            // 处理 count
            String value = getVal(args);
            count = Integer.parseInt(value);
            return Reply.array(cache.pop(key, false, count));
        }
        // 只有一个就不返回数组了
        String[] lpop = cache.pop(key, false, count);
        return Reply.bulkString((lpop == null || lpop.length == 0) ? null : lpop[0]);
    }
}
